package com.shanks.framework.mq.producer;

import com.shanks.framework.mq.exception.MQException;

public interface BaseMQProducer {

    String getProducerKey();

    /**
     * @param topic
     * @param tags
     * @param key
     * @param body
     * @param source
     * @throws MQException
     */
    void send(String topic, String tags, String key, String body, String source) throws MQException;

    /**
     * 根据原消息信息自动发送ack消息，注意此方法的topic 和 key含义不同，为原始消息的属性！
     * @param originTopic  原消息的topic
     * @param originTag    原始消息的tags
     * @param originKey    原消息的key
     * @param result    消息处理结果，注意，如果返回result=false则将对应的消息记录标记为失败，不会再重发消息
     * @param source    发送ack的来源，消息消费端还给消息发送方的标示；
     */
    void sendAck(String originTopic, String originTag, String originKey, Boolean result, String source) throws MQException;

    /**
     * 获取nameAddr
     *
     * @return
     */
    String getNamesrvAddr();
}
